/**
 *
 */
if(typeof (module) !="undefined"){
    module.exports = TableTd;

    var Serializer = require('./Serializer');
    var Parser = require('./Parser');
    var PointPath = require('../common/PointPath');
}


function TableTd() 
{
    this.sub = new Array(); // 只保存了 children
}

TableTd.prototype.EMPTY_TALBE_TD = 0; // 表示空格子对象


// 转成json字符串
TableTd.prototype.toJson = function (){
    var ret = '{';

    // 对于子对象，在undo情况下只记录其id即可，在文档保存的情况下需要记录子对象的数据
    ret +=('"sub":'+'[');

    for(var m=0;m<this.sub.length;m++){
        if(m>0){
            ret +=',';
        }
        ret += this.sub[m].toJson();
    }

    ret +=']';


    ret+='}';
    return ret;
}
// 从json对象中解析出PointPath
TableTd.prototype.fromJson = function(jsonObj, versionId){
			
    // 对于子对象，在undo情况下只还原其id即可，在文档初始化的情况下需要将子对象数据存储到id管理器
    for(var m=0;m<jsonObj.sub.length;m++){
        var obj= Parser.prototype.fromUnknownJson.call(this, jsonObj.sub[m], versionId) ;
        this.sub.push(obj);
    }
}


/**
 * 将对象添加到PDF中
 * @param doc  PDFDocument结构
 * @param info  对象结构，属性如下：
 *                  docOriginX  文档的新原点 在原始原点的 坐标
 *                  docOriginY  文档的新原点 在原始原点的 坐标
 * @param colW  列宽
 * @param rowH  行高
 * @param colIndex  列数
 * @param rowIndex 行数
 */
TableTd.prototype.addToPdf = function(doc, info, colW, rowH, colIndex, rowIndex){
    this.x=colW*colIndex,this.y=rowH*rowIndex,this.an=0;
    // 保存上下文环境
    Serializer.prototype.before.call(this, doc, info);

    // 描绘裁切路径
    var clip = PointPath.prototype.generateRect(0,0,colW, rowH);
    var svgPath = clip.toSvgPath();
    doc.path(svgPath).clip();
    // 描绘格子中的对象
    for(var i=0;i<this.sub.length;i++){
        this.sub[i].addToPdf(doc, info);
    }

    // 还原上下文环境
    Serializer.prototype.after.call(this, doc,info);
}
